home *** CD-ROM | disk | FTP | other *** search
/ Sky at Night 2007 June / SAN CD 6-2007 CD-ROM 25.iso / pc / Software / AstroGrav_Win / Java / jre1.6.0 / lib / rt.jar / sun / applet / AppletViewer.class (.txt) < prev    next >
Encoding:
Java Class File  |  2006-11-29  |  16.8 KB  |  799 lines

  1. package sun.applet;
  2.  
  3. import java.applet.Applet;
  4. import java.applet.AppletContext;
  5. import java.applet.AudioClip;
  6. import java.awt.Dimension;
  7. import java.awt.Frame;
  8. import java.awt.Graphics;
  9. import java.awt.Graphics2D;
  10. import java.awt.Image;
  11. import java.awt.Insets;
  12. import java.awt.Label;
  13. import java.awt.Menu;
  14. import java.awt.MenuBar;
  15. import java.awt.MenuItem;
  16. import java.awt.Point;
  17. import java.awt.Toolkit;
  18. import java.awt.event.ActionEvent;
  19. import java.awt.print.PageFormat;
  20. import java.awt.print.Printable;
  21. import java.awt.print.PrinterException;
  22. import java.awt.print.PrinterJob;
  23. import java.io.BufferedReader;
  24. import java.io.ByteArrayOutputStream;
  25. import java.io.IOException;
  26. import java.io.InputStream;
  27. import java.io.InputStreamReader;
  28. import java.io.PrintStream;
  29. import java.io.Reader;
  30. import java.net.SocketPermission;
  31. import java.net.URL;
  32. import java.net.URLConnection;
  33. import java.security.AccessController;
  34. import java.security.Permission;
  35. import java.util.Enumeration;
  36. import java.util.HashMap;
  37. import java.util.Hashtable;
  38. import java.util.Iterator;
  39. import java.util.Locale;
  40. import java.util.Map;
  41. import java.util.Vector;
  42. import javax.print.attribute.HashPrintRequestAttributeSet;
  43. import sun.misc.Ref;
  44.  
  45. public class AppletViewer extends Frame implements AppletContext, Printable {
  46.    private static String defaultSaveFile = "Applet.ser";
  47.    AppletViewerPanel panel;
  48.    Label label;
  49.    PrintStream statusMsgStream;
  50.    AppletViewerFactory factory;
  51.    private static Map audioClips = new HashMap();
  52.    private static Map imageRefs = new HashMap();
  53.    static Vector appletPanels = new Vector();
  54.    static Hashtable systemParam = new Hashtable();
  55.    static AppletProps props;
  56.    // $FF: renamed from: c int
  57.    static int field_0;
  58.    // $FF: renamed from: x int
  59.    private static int field_1;
  60.    // $FF: renamed from: y int
  61.    private static int field_2;
  62.    private static final int XDELTA = 30;
  63.    private static final int YDELTA = 30;
  64.    static String encoding;
  65.    private static AppletMessageHandler amh;
  66.  
  67.    public AppletViewer(int var1, int var2, URL var3, Hashtable var4, PrintStream var5, AppletViewerFactory var6) {
  68.       this.factory = var6;
  69.       this.statusMsgStream = var5;
  70.       this.setTitle(amh.getMessage("tool.title", var4.get("code")));
  71.       MenuBar var7 = var6.getBaseMenuBar();
  72.       Menu var8 = new Menu(amh.getMessage("menu.applet"));
  73.       this.addMenuItem(var8, "menuitem.restart");
  74.       this.addMenuItem(var8, "menuitem.reload");
  75.       this.addMenuItem(var8, "menuitem.stop");
  76.       this.addMenuItem(var8, "menuitem.save");
  77.       this.addMenuItem(var8, "menuitem.start");
  78.       this.addMenuItem(var8, "menuitem.clone");
  79.       var8.add(new MenuItem("-"));
  80.       this.addMenuItem(var8, "menuitem.tag");
  81.       this.addMenuItem(var8, "menuitem.info");
  82.       this.addMenuItem(var8, "menuitem.edit").disable();
  83.       this.addMenuItem(var8, "menuitem.encoding");
  84.       var8.add(new MenuItem("-"));
  85.       this.addMenuItem(var8, "menuitem.print");
  86.       var8.add(new MenuItem("-"));
  87.       this.addMenuItem(var8, "menuitem.props");
  88.       var8.add(new MenuItem("-"));
  89.       this.addMenuItem(var8, "menuitem.close");
  90.       if (var6.isStandalone()) {
  91.          this.addMenuItem(var8, "menuitem.quit");
  92.       }
  93.  
  94.       var7.add(var8);
  95.       this.setMenuBar(var7);
  96.       this.add("Center", this.panel = new AppletViewerPanel(var3, var4));
  97.       this.add("South", this.label = new Label(amh.getMessage("label.hello")));
  98.       this.panel.init();
  99.       appletPanels.addElement(this.panel);
  100.       this.pack();
  101.       this.move(var1, var2);
  102.       this.setVisible(true);
  103.       1 var9 = new 1(this);
  104.       this.addWindowListener(var9);
  105.       this.panel.addAppletListener(new 1AppletEventListener(this, this));
  106.       this.showStatus(amh.getMessage("status.start"));
  107.       this.initEventQueue();
  108.    }
  109.  
  110.    public MenuItem addMenuItem(Menu var1, String var2) {
  111.       MenuItem var3 = new MenuItem(amh.getMessage(var2));
  112.       var3.addActionListener(new UserActionListener(this, (1)null));
  113.       return var1.add(var3);
  114.    }
  115.  
  116.    private void initEventQueue() {
  117.       String var1 = System.getProperty("appletviewer.send.event");
  118.       if (var1 == null) {
  119.          this.panel.sendEvent(1);
  120.          this.panel.sendEvent(2);
  121.          this.panel.sendEvent(3);
  122.       } else {
  123.          String[] var2 = this.splitSeparator(",", var1);
  124.  
  125.          for(int var3 = 0; var3 < var2.length; ++var3) {
  126.             System.out.println("Adding event to queue: " + var2[var3]);
  127.             if (var2[var3].equals("dispose")) {
  128.                this.panel.sendEvent(0);
  129.             } else if (var2[var3].equals("load")) {
  130.                this.panel.sendEvent(1);
  131.             } else if (var2[var3].equals("init")) {
  132.                this.panel.sendEvent(2);
  133.             } else if (var2[var3].equals("start")) {
  134.                this.panel.sendEvent(3);
  135.             } else if (var2[var3].equals("stop")) {
  136.                this.panel.sendEvent(4);
  137.             } else if (var2[var3].equals("destroy")) {
  138.                this.panel.sendEvent(5);
  139.             } else if (var2[var3].equals("quit")) {
  140.                this.panel.sendEvent(6);
  141.             } else if (var2[var3].equals("error")) {
  142.                this.panel.sendEvent(7);
  143.             } else {
  144.                System.out.println("Unrecognized event name: " + var2[var3]);
  145.             }
  146.          }
  147.  
  148.          while(!this.panel.emptyEventQueue()) {
  149.          }
  150.  
  151.          this.appletSystemExit();
  152.       }
  153.  
  154.    }
  155.  
  156.    private String[] splitSeparator(String var1, String var2) {
  157.       Vector var3 = new Vector();
  158.       int var4 = 0;
  159.  
  160.       int var7;
  161.       for(var7 = 0; (var7 = var2.indexOf(var1, var4)) != -1; var4 = var7 + 1) {
  162.          var3.addElement(var2.substring(var4, var7));
  163.       }
  164.  
  165.       var3.addElement(var2.substring(var4));
  166.       String[] var6 = new String[var3.size()];
  167.       var3.copyInto(var6);
  168.       return var6;
  169.    }
  170.  
  171.    public AudioClip getAudioClip(URL var1) {
  172.       checkConnect(var1);
  173.       synchronized(audioClips) {
  174.          Object var3 = (AudioClip)audioClips.get(var1);
  175.          if (var3 == null) {
  176.             audioClips.put(var1, var3 = new AppletAudioClip(var1));
  177.          }
  178.  
  179.          return (AudioClip)var3;
  180.       }
  181.    }
  182.  
  183.    public Image getImage(URL var1) {
  184.       return getCachedImage(var1);
  185.    }
  186.  
  187.    static Image getCachedImage(URL var0) {
  188.       return (Image)getCachedImageRef(var0).get();
  189.    }
  190.  
  191.    static Ref getCachedImageRef(URL var0) {
  192.       synchronized(imageRefs) {
  193.          AppletImageRef var2 = (AppletImageRef)imageRefs.get(var0);
  194.          if (var2 == null) {
  195.             var2 = new AppletImageRef(var0);
  196.             imageRefs.put(var0, var2);
  197.          }
  198.  
  199.          return var2;
  200.       }
  201.    }
  202.  
  203.    static void flushImageCache() {
  204.       imageRefs.clear();
  205.    }
  206.  
  207.    public Applet getApplet(String var1) {
  208.       AppletSecurity var2 = (AppletSecurity)System.getSecurityManager();
  209.       var1 = var1.toLowerCase();
  210.       SocketPermission var3 = new SocketPermission(this.panel.getCodeBase().getHost(), "connect");
  211.       Enumeration var4 = appletPanels.elements();
  212.  
  213.       while(var4.hasMoreElements()) {
  214.          AppletPanel var5 = (AppletPanel)var4.nextElement();
  215.          String var6 = var5.getParameter("name");
  216.          if (var6 != null) {
  217.             var6 = var6.toLowerCase();
  218.          }
  219.  
  220.          if (var1.equals(var6) && var5.getDocumentBase().equals(this.panel.getDocumentBase())) {
  221.             SocketPermission var7 = new SocketPermission(var5.getCodeBase().getHost(), "connect");
  222.             if (var3.implies(var7)) {
  223.                return var5.applet;
  224.             }
  225.          }
  226.       }
  227.  
  228.       return null;
  229.    }
  230.  
  231.    public Enumeration getApplets() {
  232.       AppletSecurity var1 = (AppletSecurity)System.getSecurityManager();
  233.       Vector var2 = new Vector();
  234.       SocketPermission var3 = new SocketPermission(this.panel.getCodeBase().getHost(), "connect");
  235.       Enumeration var4 = appletPanels.elements();
  236.  
  237.       while(var4.hasMoreElements()) {
  238.          AppletPanel var5 = (AppletPanel)var4.nextElement();
  239.          if (var5.getDocumentBase().equals(this.panel.getDocumentBase())) {
  240.             SocketPermission var6 = new SocketPermission(var5.getCodeBase().getHost(), "connect");
  241.             if (var3.implies(var6)) {
  242.                var2.addElement(var5.applet);
  243.             }
  244.          }
  245.       }
  246.  
  247.       return var2.elements();
  248.    }
  249.  
  250.    public void showDocument(URL var1) {
  251.    }
  252.  
  253.    public void showDocument(URL var1, String var2) {
  254.    }
  255.  
  256.    public void showStatus(String var1) {
  257.       this.label.setText(var1);
  258.    }
  259.  
  260.    public void setStream(String var1, InputStream var2) throws IOException {
  261.    }
  262.  
  263.    public InputStream getStream(String var1) {
  264.       return null;
  265.    }
  266.  
  267.    public Iterator getStreamKeys() {
  268.       return null;
  269.    }
  270.  
  271.    public static void printTag(PrintStream var0, Hashtable var1) {
  272.       var0.print("<applet");
  273.       String var2 = (String)var1.get("codebase");
  274.       if (var2 != null) {
  275.          var0.print(" codebase=\"" + var2 + "\"");
  276.       }
  277.  
  278.       var2 = (String)var1.get("code");
  279.       if (var2 == null) {
  280.          var2 = "applet.class";
  281.       }
  282.  
  283.       var0.print(" code=\"" + var2 + "\"");
  284.       var2 = (String)var1.get("width");
  285.       if (var2 == null) {
  286.          var2 = "150";
  287.       }
  288.  
  289.       var0.print(" width=" + var2);
  290.       var2 = (String)var1.get("height");
  291.       if (var2 == null) {
  292.          var2 = "100";
  293.       }
  294.  
  295.       var0.print(" height=" + var2);
  296.       var2 = (String)var1.get("name");
  297.       if (var2 != null) {
  298.          var0.print(" name=\"" + var2 + "\"");
  299.       }
  300.  
  301.       var0.println(">");
  302.       int var3 = var1.size();
  303.       String[] var4 = new String[var3];
  304.       var3 = 0;
  305.  
  306.       for(Enumeration var5 = var1.keys(); var5.hasMoreElements(); ++var3) {
  307.          String var6 = (String)var5.nextElement();
  308.  
  309.          int var7;
  310.          for(var7 = 0; var7 < var3 && var4[var7].compareTo(var6) < 0; ++var7) {
  311.          }
  312.  
  313.          System.arraycopy(var4, var7, var4, var7 + 1, var3 - var7);
  314.          var4[var7] = var6;
  315.       }
  316.  
  317.       for(int var13 = 0; var13 < var3; ++var13) {
  318.          String var14 = var4[var13];
  319.          if (systemParam.get(var14) == null) {
  320.             var0.println("<param name=" + var14 + " value=\"" + var1.get(var14) + "\">");
  321.          }
  322.       }
  323.  
  324.       var0.println("</applet>");
  325.    }
  326.  
  327.    public void updateAtts() {
  328.       Dimension var1 = this.panel.size();
  329.       Insets var2 = this.panel.insets();
  330.       this.panel.atts.put("width", (new Integer(var1.width - (var2.left + var2.right))).toString());
  331.       this.panel.atts.put("height", (new Integer(var1.height - (var2.top + var2.bottom))).toString());
  332.    }
  333.  
  334.    void appletRestart() {
  335.       this.panel.sendEvent(4);
  336.       this.panel.sendEvent(5);
  337.       this.panel.sendEvent(2);
  338.       this.panel.sendEvent(3);
  339.    }
  340.  
  341.    void appletReload() {
  342.       this.panel.sendEvent(4);
  343.       this.panel.sendEvent(5);
  344.       this.panel.sendEvent(0);
  345.       AppletPanel.flushClassLoader(this.panel.getClassLoaderCacheKey());
  346.  
  347.       try {
  348.          this.panel.joinAppletThread();
  349.          this.panel.release();
  350.       } catch (InterruptedException var2) {
  351.          return;
  352.       }
  353.  
  354.       this.panel.createAppletThread();
  355.       this.panel.sendEvent(1);
  356.       this.panel.sendEvent(2);
  357.       this.panel.sendEvent(3);
  358.    }
  359.  
  360.    void appletSave() {
  361.       AccessController.doPrivileged(new 2(this));
  362.    }
  363.  
  364.    void appletClone() {
  365.       Point var1 = this.location();
  366.       this.updateAtts();
  367.       this.factory.createAppletViewer(var1.x + 30, var1.y + 30, this.panel.documentURL, (Hashtable)this.panel.atts.clone());
  368.    }
  369.  
  370.    void appletTag() {
  371.       ByteArrayOutputStream var1 = new ByteArrayOutputStream();
  372.       this.updateAtts();
  373.       printTag(new PrintStream(var1), this.panel.atts);
  374.       this.showStatus(amh.getMessage("applettag"));
  375.       Point var2 = this.location();
  376.       new TextFrame(var2.x + 30, var2.y + 30, amh.getMessage("applettag.textframe"), var1.toString());
  377.    }
  378.  
  379.    void appletInfo() {
  380.       String var1 = this.panel.applet.getAppletInfo();
  381.       if (var1 == null) {
  382.          var1 = amh.getMessage("appletinfo.applet");
  383.       }
  384.  
  385.       var1 = var1 + "\n\n";
  386.       String[][] var2 = this.panel.applet.getParameterInfo();
  387.       if (var2 != null) {
  388.          for(int var3 = 0; var3 < var2.length; ++var3) {
  389.             var1 = var1 + var2[var3][0] + " -- " + var2[var3][1] + " -- " + var2[var3][2] + "\n";
  390.          }
  391.       } else {
  392.          var1 = var1 + amh.getMessage("appletinfo.param");
  393.       }
  394.  
  395.       Point var5 = this.location();
  396.       new TextFrame(var5.x + 30, var5.y + 30, amh.getMessage("appletinfo.textframe"), var1);
  397.    }
  398.  
  399.    void appletCharacterEncoding() {
  400.       this.showStatus(amh.getMessage("appletencoding", encoding));
  401.    }
  402.  
  403.    void appletEdit() {
  404.    }
  405.  
  406.    void appletPrint() {
  407.       PrinterJob var1 = PrinterJob.getPrinterJob();
  408.       if (var1 != null) {
  409.          HashPrintRequestAttributeSet var2 = new HashPrintRequestAttributeSet();
  410.          if (var1.printDialog(var2)) {
  411.             var1.setPrintable(this);
  412.  
  413.             try {
  414.                var1.print(var2);
  415.                this.statusMsgStream.println(amh.getMessage("appletprint.finish"));
  416.             } catch (PrinterException var4) {
  417.                this.statusMsgStream.println(amh.getMessage("appletprint.fail"));
  418.             }
  419.          } else {
  420.             this.statusMsgStream.println(amh.getMessage("appletprint.cancel"));
  421.          }
  422.       } else {
  423.          this.statusMsgStream.println(amh.getMessage("appletprint.fail"));
  424.       }
  425.  
  426.    }
  427.  
  428.    public int print(Graphics var1, PageFormat var2, int var3) {
  429.       if (var3 > 0) {
  430.          return 1;
  431.       } else {
  432.          Graphics2D var4 = (Graphics2D)var1;
  433.          var4.translate(var2.getImageableX(), var2.getImageableY());
  434.          this.panel.applet.printAll(var1);
  435.          return 0;
  436.       }
  437.    }
  438.  
  439.    public static synchronized void networkProperties() {
  440.       if (props == null) {
  441.          props = new AppletProps();
  442.       }
  443.  
  444.       props.addNotify();
  445.       props.setVisible(true);
  446.    }
  447.  
  448.    void appletStart() {
  449.       this.panel.sendEvent(3);
  450.    }
  451.  
  452.    void appletStop() {
  453.       this.panel.sendEvent(4);
  454.    }
  455.  
  456.    private void appletShutdown(AppletPanel var1) {
  457.       var1.sendEvent(4);
  458.       var1.sendEvent(5);
  459.       var1.sendEvent(0);
  460.       var1.sendEvent(6);
  461.    }
  462.  
  463.    void appletClose() {
  464.       AppletViewerPanel var1 = this.panel;
  465.       (new Thread(new 3(this, var1))).start();
  466.    }
  467.  
  468.    private void appletSystemExit() {
  469.       if (this.factory.isStandalone()) {
  470.          System.exit(0);
  471.       }
  472.  
  473.    }
  474.  
  475.    protected void appletQuit() {
  476.       (new Thread(new 4(this))).start();
  477.    }
  478.  
  479.    public void processUserAction(ActionEvent var1) {
  480.       String var2 = ((MenuItem)var1.getSource()).getLabel();
  481.       if (amh.getMessage("menuitem.restart").equals(var2)) {
  482.          this.appletRestart();
  483.       } else if (amh.getMessage("menuitem.reload").equals(var2)) {
  484.          this.appletReload();
  485.       } else if (amh.getMessage("menuitem.clone").equals(var2)) {
  486.          this.appletClone();
  487.       } else if (amh.getMessage("menuitem.stop").equals(var2)) {
  488.          this.appletStop();
  489.       } else if (amh.getMessage("menuitem.save").equals(var2)) {
  490.          this.appletSave();
  491.       } else if (amh.getMessage("menuitem.start").equals(var2)) {
  492.          this.appletStart();
  493.       } else if (amh.getMessage("menuitem.tag").equals(var2)) {
  494.          this.appletTag();
  495.       } else if (amh.getMessage("menuitem.info").equals(var2)) {
  496.          this.appletInfo();
  497.       } else if (amh.getMessage("menuitem.encoding").equals(var2)) {
  498.          this.appletCharacterEncoding();
  499.       } else if (amh.getMessage("menuitem.edit").equals(var2)) {
  500.          this.appletEdit();
  501.       } else if (amh.getMessage("menuitem.print").equals(var2)) {
  502.          this.appletPrint();
  503.       } else if (amh.getMessage("menuitem.props").equals(var2)) {
  504.          networkProperties();
  505.       } else if (amh.getMessage("menuitem.close").equals(var2)) {
  506.          this.appletClose();
  507.       } else if (this.factory.isStandalone() && amh.getMessage("menuitem.quit").equals(var2)) {
  508.          this.appletQuit();
  509.       }
  510.    }
  511.  
  512.    public static int countApplets() {
  513.       return appletPanels.size();
  514.    }
  515.  
  516.    public static void skipSpace(Reader var0) throws IOException {
  517.       while(field_0 >= 0 && (field_0 == 32 || field_0 == 9 || field_0 == 10 || field_0 == 13)) {
  518.          field_0 = var0.read();
  519.       }
  520.  
  521.    }
  522.  
  523.    public static String scanIdentifier(Reader var0) throws IOException {
  524.       StringBuffer var1;
  525.       for(var1 = new StringBuffer(); field_0 >= 97 && field_0 <= 122 || field_0 >= 65 && field_0 <= 90 || field_0 >= 48 && field_0 <= 57 || field_0 == 95; field_0 = var0.read()) {
  526.          var1.append((char)field_0);
  527.       }
  528.  
  529.       return var1.toString();
  530.    }
  531.  
  532.    public static Hashtable scanTag(Reader var0) throws IOException {
  533.       Hashtable var1 = new Hashtable();
  534.       skipSpace(var0);
  535.  
  536.       while(field_0 >= 0 && field_0 != 62) {
  537.          String var2 = scanIdentifier(var0);
  538.          String var3 = "";
  539.          skipSpace(var0);
  540.          if (field_0 == 61) {
  541.             int var4 = -1;
  542.             field_0 = var0.read();
  543.             skipSpace(var0);
  544.             if (field_0 == 39 || field_0 == 34) {
  545.                var4 = field_0;
  546.                field_0 = var0.read();
  547.             }
  548.  
  549.             StringBuffer var5;
  550.             for(var5 = new StringBuffer(); field_0 > 0 && (var4 < 0 && field_0 != 32 && field_0 != 9 && field_0 != 10 && field_0 != 13 && field_0 != 62 || var4 >= 0 && field_0 != var4); field_0 = var0.read()) {
  551.                var5.append((char)field_0);
  552.             }
  553.  
  554.             if (field_0 == var4) {
  555.                field_0 = var0.read();
  556.             }
  557.  
  558.             skipSpace(var0);
  559.             var3 = var5.toString();
  560.          }
  561.  
  562.          if (!var3.equals("")) {
  563.             var1.put(var2.toLowerCase(Locale.ENGLISH), var3);
  564.          }
  565.  
  566.          while(field_0 != 62 && field_0 >= 0 && (field_0 < 97 || field_0 > 122) && (field_0 < 65 || field_0 > 90) && (field_0 < 48 || field_0 > 57) && field_0 != 95) {
  567.             field_0 = var0.read();
  568.          }
  569.       }
  570.  
  571.       return var1;
  572.    }
  573.  
  574.    private static Reader makeReader(InputStream var0) {
  575.       if (encoding != null) {
  576.          try {
  577.             return new BufferedReader(new InputStreamReader(var0, encoding));
  578.          } catch (IOException var2) {
  579.          }
  580.       }
  581.  
  582.       InputStreamReader var1 = new InputStreamReader(var0);
  583.       encoding = var1.getEncoding();
  584.       return new BufferedReader(var1);
  585.    }
  586.  
  587.    public static void parse(URL var0, String var1) throws IOException {
  588.       encoding = var1;
  589.       parse(var0, System.out, new StdAppletViewerFactory());
  590.    }
  591.  
  592.    public static void parse(URL var0) throws IOException {
  593.       parse(var0, System.out, new StdAppletViewerFactory());
  594.    }
  595.  
  596.    public static void parse(URL var0, PrintStream var1, AppletViewerFactory var2) throws IOException {
  597.       boolean var3 = false;
  598.       boolean var4 = false;
  599.       boolean var5 = false;
  600.       String var6 = amh.getMessage("parse.warning.requiresname");
  601.       String var7 = amh.getMessage("parse.warning.paramoutside");
  602.       String var8 = amh.getMessage("parse.warning.applet.requirescode");
  603.       String var9 = amh.getMessage("parse.warning.applet.requiresheight");
  604.       String var10 = amh.getMessage("parse.warning.applet.requireswidth");
  605.       String var11 = amh.getMessage("parse.warning.object.requirescode");
  606.       String var12 = amh.getMessage("parse.warning.object.requiresheight");
  607.       String var13 = amh.getMessage("parse.warning.object.requireswidth");
  608.       String var14 = amh.getMessage("parse.warning.embed.requirescode");
  609.       String var15 = amh.getMessage("parse.warning.embed.requiresheight");
  610.       String var16 = amh.getMessage("parse.warning.embed.requireswidth");
  611.       String var17 = amh.getMessage("parse.warning.appnotLongersupported");
  612.       URLConnection var18 = var0.openConnection();
  613.       Reader var19 = makeReader(var18.getInputStream());
  614.       var0 = var18.getURL();
  615.       int var20 = 1;
  616.       Hashtable var21 = null;
  617.  
  618.       while(true) {
  619.          field_0 = var19.read();
  620.          if (field_0 == -1) {
  621.             var19.close();
  622.             return;
  623.          }
  624.  
  625.          if (field_0 == 60) {
  626.             field_0 = var19.read();
  627.             if (field_0 == 47) {
  628.                field_0 = var19.read();
  629.                String var33 = scanIdentifier(var19);
  630.                if (var33.equalsIgnoreCase("applet") || var33.equalsIgnoreCase("object") || var33.equalsIgnoreCase("embed")) {
  631.                   if (var4 && var21.get("code") == null && var21.get("object") == null) {
  632.                      var1.println(var11);
  633.                      var21 = null;
  634.                   }
  635.  
  636.                   if (var21 != null) {
  637.                      var2.createAppletViewer(field_1, field_2, var0, var21);
  638.                      field_1 += 30;
  639.                      field_2 += 30;
  640.                      Dimension var35 = Toolkit.getDefaultToolkit().getScreenSize();
  641.                      if (field_1 > var35.width - 300 || field_2 > var35.height - 300) {
  642.                         field_1 = 0;
  643.                         field_2 = 2 * var20 * 30;
  644.                         ++var20;
  645.                      }
  646.                   }
  647.  
  648.                   var21 = null;
  649.                   var3 = false;
  650.                   var4 = false;
  651.                   var5 = false;
  652.                }
  653.             } else {
  654.                String var22 = scanIdentifier(var19);
  655.                if (var22.equalsIgnoreCase("param")) {
  656.                   Hashtable var34 = scanTag(var19);
  657.                   String var24 = (String)var34.get("name");
  658.                   if (var24 == null) {
  659.                      var1.println(var6);
  660.                   } else {
  661.                      String var25 = (String)var34.get("value");
  662.                      if (var25 == null) {
  663.                         var1.println(var6);
  664.                      } else if (var21 != null) {
  665.                         var21.put(var24.toLowerCase(), var25);
  666.                      } else {
  667.                         var1.println(var7);
  668.                      }
  669.                   }
  670.                } else if (var22.equalsIgnoreCase("applet")) {
  671.                   var3 = true;
  672.                   var21 = scanTag(var19);
  673.                   if (var21.get("code") == null && var21.get("object") == null) {
  674.                      var1.println(var8);
  675.                      var21 = null;
  676.                   } else if (var21.get("width") == null) {
  677.                      var1.println(var10);
  678.                      var21 = null;
  679.                   } else if (var21.get("height") == null) {
  680.                      var1.println(var9);
  681.                      var21 = null;
  682.                   }
  683.                } else if (var22.equalsIgnoreCase("object")) {
  684.                   var4 = true;
  685.                   var21 = scanTag(var19);
  686.                   if (var21.get("codebase") != null) {
  687.                      var21.remove("codebase");
  688.                   }
  689.  
  690.                   if (var21.get("width") == null) {
  691.                      var1.println(var13);
  692.                      var21 = null;
  693.                   } else if (var21.get("height") == null) {
  694.                      var1.println(var12);
  695.                      var21 = null;
  696.                   }
  697.                } else if (var22.equalsIgnoreCase("embed")) {
  698.                   var5 = true;
  699.                   var21 = scanTag(var19);
  700.                   if (var21.get("code") == null && var21.get("object") == null) {
  701.                      var1.println(var14);
  702.                      var21 = null;
  703.                   } else if (var21.get("width") == null) {
  704.                      var1.println(var16);
  705.                      var21 = null;
  706.                   } else if (var21.get("height") == null) {
  707.                      var1.println(var15);
  708.                      var21 = null;
  709.                   }
  710.                } else if (var22.equalsIgnoreCase("app")) {
  711.                   var1.println(var17);
  712.                   Hashtable var23 = scanTag(var19);
  713.                   var22 = (String)var23.get("class");
  714.                   if (var22 != null) {
  715.                      var23.remove("class");
  716.                      var23.put("code", var22 + ".class");
  717.                   }
  718.  
  719.                   var22 = (String)var23.get("src");
  720.                   if (var22 != null) {
  721.                      var23.remove("src");
  722.                      var23.put("codebase", var22);
  723.                   }
  724.  
  725.                   if (var23.get("width") == null) {
  726.                      var23.put("width", "100");
  727.                   }
  728.  
  729.                   if (var23.get("height") == null) {
  730.                      var23.put("height", "100");
  731.                   }
  732.  
  733.                   printTag(var1, var23);
  734.                   var1.println();
  735.                }
  736.             }
  737.          }
  738.       }
  739.    }
  740.  
  741.    /** @deprecated */
  742.    @Deprecated
  743.    public static void main(String[] var0) {
  744.       Main.main(var0);
  745.    }
  746.  
  747.    private static void checkConnect(URL var0) {
  748.       SecurityManager var1 = System.getSecurityManager();
  749.       if (var1 != null) {
  750.          try {
  751.             Permission var2 = var0.openConnection().getPermission();
  752.             if (var2 != null) {
  753.                var1.checkPermission(var2);
  754.             } else {
  755.                var1.checkConnect(var0.getHost(), var0.getPort());
  756.             }
  757.          } catch (IOException var3) {
  758.             var1.checkConnect(var0.getHost(), var0.getPort());
  759.          }
  760.       }
  761.  
  762.    }
  763.  
  764.    // $FF: synthetic method
  765.    static AppletMessageHandler access$100() {
  766.       return amh;
  767.    }
  768.  
  769.    // $FF: synthetic method
  770.    static String access$200() {
  771.       return defaultSaveFile;
  772.    }
  773.  
  774.    // $FF: synthetic method
  775.    static void access$300(AppletViewer var0, AppletPanel var1) {
  776.       var0.appletShutdown(var1);
  777.    }
  778.  
  779.    // $FF: synthetic method
  780.    static void access$400(AppletViewer var0) {
  781.       var0.appletSystemExit();
  782.    }
  783.  
  784.    static {
  785.       systemParam.put("codebase", "codebase");
  786.       systemParam.put("code", "code");
  787.       systemParam.put("alt", "alt");
  788.       systemParam.put("width", "width");
  789.       systemParam.put("height", "height");
  790.       systemParam.put("align", "align");
  791.       systemParam.put("vspace", "vspace");
  792.       systemParam.put("hspace", "hspace");
  793.       field_1 = 0;
  794.       field_2 = 0;
  795.       encoding = null;
  796.       amh = new AppletMessageHandler("appletviewer");
  797.    }
  798. }
  799.